Amazon RDS プレビュー環境で MariaDB 11.4 が使えるようになっていたので、11.1 から登場した JSON_SCHEMA_VALID を使ってみた

Amazon RDS プレビュー環境で MariaDB 11.4 が使えるようになっていたので、11.1 から登場した JSON_SCHEMA_VALID を使ってみた

Clock Icon2024.07.17

いわさです。

Amazon RDS には一部エンジンバージョンを先行評価するための機能があります。
先日のアップデートで MariaDB 11.4 がプレビュー環境でサポートされました。

https://aws.amazon.com/about-aws/whats-new/2024/07/amazon-rds-mariadb-long-term-support-version-11-4-preview-environment/

RDS プレビュー環境で MariaDB がサポートされるのは初ですね。
最初のころは Oracle と PostgreSQL くらいだったと思いますが、いつの間にやら様々なエンジンバージョンがサポートされていますね。
あとは SQL Server と IBM Db2 くらいか。

MariaDB のリリースサイクル・メンテナンスポリシーについて

今回使えるようになったのは MariaDB の 11.4.2 です。
MariaDB も他のエンジンと同様に、長期間サポートが行われる Long-Term Release と、短期間でサポートを終了する Short-Term Releases の概念があります。

https://mariadb.org/about/#maintenance-policy

MariaDB 11.4 は最新の Long-Term Release です。
2024 年 5 月 29 日に安定版の 11.4.2 がリリースされました。こちらのサポート終了日は 2029 年 5 月 29 日と 5 年間となっています。

本日時点で Amazon RDS 非プレビュー環境での MariaDB エンジンバージョンは 10.11.8 が最新となっています。

EF432195-AC0F-4499-907A-62CBAD7A2814

MariaDB 10.11 は、今回の 11.4 のひとつ前の Long-Term Release です。
10.11 の公式のサポート終了日は 2028 年 2 月 16 日ですが、RDS 標準サポート終了日は 2025 年 9 月である点に注意しましょう。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/MariaDB.Concepts.VersionMgmt.html

そして、10.11 と 11.4 の間のバージョンは全て Short-Term Releases で、Amazon RDS では提供されていません。サポート期間も 1 年と短いです。MySQL でいうイノベーションリリースのような扱いでしょうか。

MariaDB 11.4.2 インスタンスを作成

というわけで早速プレビュー環境で MariaDB 11.4.2 インスタンスを作成しましょう。
プレビュー環境は運用環境として使わないように気をつけてください。また一定期間で削除されるなど様々な制約があります。

オハイオリージョンの RDS プレビュー環境へアクセスし、次のように通常どおり作成するだけです。
初めて操作される方は以前の RDS プレビュー環境に関する記事も参考にしてください。

https://dev.classmethod.jp/articles/postgresql-17-beta-2-rds/

MariaDB が追加されていますね。選択出来るエンジンバージョンは 11.4.2 のみです。
コミュニティバージョンとしては 11.4.0 はアルファ版、11.4.1 は RC 版で、11.4.2 が初回の GA 版となっています。

5226C6CA-F1E9-4008-A24F-6B6AB62B0B4B

作成して MySQL クライアントでアクセスしてみます。

% mysql -h hoge0717mariadb.cz8csseyg1xj.us-east-2.rds-preview.amazonaws.com -u admin -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 11.4.2-MariaDB-log managed by https://aws.amazon.com/rds/

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

サーバーバージョンが MariaDB の 11.4.2 であることが確認出来ました。

JSON_SCHEMA_VALID を使う

せっかくなので、11.4 の機能を何か確認しておきたいところです。
MariaDB 11.4 の新機能や変更点などは次のページを確認すると良いと思います。

https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-4/

11.4.1 から JSON フィールドのスキーマチェック関数が追加されているようです。
これはなかなか良いですね。MySQL 8 で使えるやつと同じかんじでしょうか。

制約付きのテーブルを作成してみます。
JSON_SCHEMA_VALID 内でスキーマの定義を行っています。

# テーブル作成
mysql> CREATE TABLE fuga (piyo JSON CHECK(JSON_SCHEMA_VALID('{"type":"object", "properties": {"hoge1":{"type":"number","maximum":5,"const":4}, "hoge2":{"type":"string","maxLength":5,"minLength":3}}, "required":["hoge1"]}', piyo)));
Query OK, 0 rows affected (0.21 sec)

こちらにレコードを作成してみましょう。
先ほど入力したスキーマ定義に反しているものは INSERT 処理に失敗しますね。

# INSERTしてみる(NG)
mysql> INSERT INTO fuga VALUES ('{"hoge1":1, "hoge2":"aaaa"}');
ERROR 4025 (23000): CONSTRAINT `fuga.piyo` failed for `hogedb`.`fuga`

mysql> INSERT INTO fuga VALUES ('{"hoge1":4, "hoge2":"aaaabbb"}');
ERROR 4025 (23000): CONSTRAINT `fuga.piyo` failed for `hogedb`.`fuga`

# INSERTしてみる(OK)
mysql> INSERT INTO fuga VALUES ('{"hoge1":4, "hoge2":"aaaa"}');
Query OK, 1 row affected (0.20 sec)

良い感じです。

さいごに

本日は Amazon RDS プレビュー環境で MariaDB 11.4 が使えるようになっていたので、11.1 から登場した JSON_SCHEMA_VALID を使ってみました。

RDS 標準サポート期間もそう長くはないので、RDS for MariaDB なワークロードを運用されている方はお早めに 11.4 での評価を行いたいところですね。
そういったテストに関してはこの RDS プレビュー環境を使うことが出来ますので、是非試してみてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.